#define  _CRT_SECURE_NO_WARNINGS
#include"Stack.h"

//void test1()
//{
//	ST s1;
//	STInit(&s1);
//	STPush(&s1, 1);
//	STPush(&s1, 2);
//	STPush(&s1, 3);
//	STPush(&s1, 4);
//	STPush(&s1, 5);
//	STPop(&s1);
//	printf("%d ", STTop(&s1));
//	while (!STEmpty(&s1))
//	{
//		printf("%d ", STTop(&s1));
//		STPop(&s1);
//	}
//	printf("\n");
//}

bool isValid(char* s) {
	ST s1;
	STInit(&s1);
	char ch;
	while (*s)
	{
		if (*s =='(' || *s == '[' || *s == '{')
		{
			STPush(&s1, *s);
		}
		else
		{
			if (STEmpty(&s1))
			{
				STDestroy(&s1);
				return false;
			}
			ch = STTop(&s1);
			STPop(&s1);
				if((*s == '}' && ch != '{') 
					||(*s == ']' && ch != '[') 
					||(*s == ')' && ch != '('))
				{
					STDestroy(&s1);
					return false;
				}
		}
		++s;
		}
	bool ret = STEmpty(&s1);
	STDestroy(&s1);
	return ret;
}
int main()
{
	/*test1();*/
	char *s = "()[]{}";
	printf("%c", *s);
	printf("%d",isValid(s));
	return 0;
}